소프트웨어 개발방법론 출현배경
소프트웨어 위기인식에 따른 소프트웨어공학의 발전
- 소프트웨어의 수요는 그 규모와 복잡성으로 인해 기하급수적으로 증가했다. 반면 개발인력의 공급한계 및 유지보수 대상과 신규 개발 요구의 급격한 증가로 총체적 위기의식이 고조되었다.
- 1968년 NATO과학위원회의 국제회의에서 소프트웨어 위기라는 용어를 처음 사용했다.
소프트웨어 이용범위의 확대
- 사용자들의 정보시스템에 대한 이해도가 확대되었다.
- 이용범위도 실무자 중심에서 관리자와 경영층으로 점차 확대되었다.
소프트웨어 프로젝트의 대형화
- 소프트웨어 개발 시 프로젝트의 규모 및 복잡도가 증가함에 따라 개발에 참여하는 인력을 대규모로 구성한다.
- 소프트웨어 프로젝트가 대형화되면서 개발기간의 장기화로 예산/기간/품질상의 복합적인 문제가 대두되었다.
소프트웨어 개발방법론의 이해
소프트웨어 개발방법론이란 소프트웨어공학원리를 소프트웨어 개발 생명주기에 적용한 개념으로 정보시스템을 개발하기 위한 작업활동, 절차, 산출물, 기법 등을 체계적으로 정리한 것이다.
소프트웨어 개발방법론의 특징
- 개발단계를 정의하고 활동, 제품, 검증절차, 각 단계의 종결기준 등을 상술한다.
- 소프트웨어 개발에 관한 계획, 분석, 설계 및 구축에 대하여 정형화된 방법과 절차, 도구 등을 공학적인 기법으로 정리한다.
- 소프트웨어 개발 방법 및 절차, 도구 등이 실무적인 관점에서 하나의 체계로 묶인다.
소프트웨어 개발방법론의 필요성
- 개발경험을 축적 및 재활용을 통한 개발 생산성을 향상시킨다. (작업의 표준화/모듈화)
- 효과적인 프로젝트 관리가 가능하다.
- 정형화된 절차와 표준용어를 제공하여 의사소통 수단을 제공한다.
- 각 단계별 검증과 종결승인을 통해 일정 수준의 품질을 보증한다.
구조적 방법론
개요
- 데이터 중심의 방법론
기본원리
- 추상화
- 구조화
- 단계적 상세화
- 모듈화
특징
- 분할과 정복의 원칙
- 프로그램 로직 중심
- 컨트롤 가능한 모듈로 구조화
단계별주요산출물
- (계획) 도메인 분석서, 프로젝트 계획서
- (분석) Data Flow Diagram
- (설계) Structure Chart, 프로그램 사양서
정보공학 방법론
개요
- 데이터 중심의 방법론
기본원리
- 정보전략계획
- 업무영역분석
- 업무시스템설계
- 시스템구축
특징
- 기업 업무지원 시스템 지원 방법론
- Data Model 중시
- 프로그램 로직은 데이터 구조에 종속(CRUD)
- 전사적 통합 데이터모델
단계별주요산출물
- (계획) 도메인 분석서, 프로젝트 계획서
- (분석) E-R Diagram, 기능차트, Event모델
- (설계) 애플리케이션 구조도, 프로그램사양서, Table 정의서/목록
객체지향 방법론
개요
- 객체, 클래스 및 이들간의 관계를 식별하여 설계모델로 변환하는 방법론
기본원리
- 요건정의
- 객체지향분석: 객체모델링 $\rightarrow$ 동적 모델링 $\rightarrow$ 기능 모델링
- 객체지향설계: 시스템설계 $\rightarrow$ 객체설계 $\rightarrow$ 구현
- 테스트/배포: 테스트 $\rightarrow$ 패키지 $\rightarrow$ 프로젝트평가
특징
- 프로그램의 원소는 객체
- 데이터와 로직 통합(객체)
- 고도의 모듈화
- 상속에 의한 재사용(White Box Reuse)
- 분석-설계간 Gap없음
단계별주요산출물
- (계획) Biz Process/Concept Model, 프로젝트 계획서
- (분석) Use Case Diagram, Sequence Diagram, Class Diagram
- (설계) Sequence Diagram, Class Diagram, Component Diagram, Deployment Diagram
컴포넌트기반 방법론
개요
- 재사용이 가능한 컴포넌트의 개발 또는 상용 컴포넌트들을 조합하는 방법론
기본원리
- 요구분석
- 분석: 아키텍처 정의, UseCase 모델링
- 설계: UI설계, 컴포넌트 정의/설계, DB ,컨버젼, 테스트 설계
- 개발: 코딩, 테스트
- 구현: 릴리즈, 교육
특징
- 객체방법론의 진화된 형태
- Interface중시
- 인터페이스의 구현이 컴포넌트
- Black Box Reuse 지향
단계별주요산출물
- (계획) Biz Process/Concept Model, 프로젝트 계획서
- (분석) Use Case Diagram, Component Diagram, 재사용 계획서
- (설계) Sequence Diagram, Class Diagram, Component Diagram
소프트웨어 개발방법론 선택기준
- 프로젝트 환경 (응용분야, 시스템규모, 복잡도, 성격 등)
- 수작업 최소화와 자동화 정도가 높을수록 좋다. (시간과 비용 절감)
- 개발자들의 공감하에 적절히 이용할 수 있어야 한다. (방법과 도구, 경험)
- 프로젝트 진행과정의 활동과 절차 수행에 필요한 기법과 표준제공 여부
- 작업수행자의 책임과 역할 정의의 구체성 및 산출물 템플릿 제공 여부
- 프로젝트 진행의 일관성, 개발생산성, 산출물의 품질보증 등 성공확신 정도